<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/node.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/node.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * include/linux/node.h - generic node definition</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * This is mainly for topological representation. We define the </span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * basic &apos;struct node&apos; here, which can be embedded in per-arch </span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * definitions of processors.</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> *</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * Basic handling of the devices is done in drivers/base/node.c</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * and system devices are handled in drivers/base/sys.c. </span>
<a name="10" /><span class="True">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * Nodes are exported via driverfs in the class/node/devices/</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> * directory. </span>
<a name="13" /><span class="True">      13:</span> <span class="k"> */</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX05PREVfSF9fMA__"><span class="b">_LINUX_NODE_H_</span></a>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX05PREVfSF9fMA__"><span class="b">_LINUX_NODE_H_</span></a>
<a name="16" /><span class="Maybe">      16:</span> 
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">device</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">cpumask</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">workqueue</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="20" /><span class="Maybe">      20:</span> 
<a name="21" /><span class="Maybe">      21:</span> <span class="m">struct</span> <span class="b">node</span> <span class="f">{</span>
<a name="22" /><span class="Maybe">      22:</span>     <span class="m">struct</span> <span class="b">device</span>    <span class="b">dev</span><span class="f">;</span>
<a name="23" /><span class="Maybe">      23:</span> 
<a name="24" /><span class="False">      24:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_MEMORY_HOTPLUG_SPARSE</span><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX0hVR0VUTEJGU18w"><span class="b">CONFIG_HUGETLBFS</span></a><span class="f">)</span>
<a name="25" /><span class="False">      25:</span>     <span class="m">struct</span> <span class="b">work_struct</span>    <span class="b">node_work</span><span class="f">;</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">endif</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">}</span><span class="f">;</span>
<a name="28" /><span class="Maybe">      28:</span> 
<a name="29" /><span class="Maybe">      29:</span> <span class="m">struct</span> <span class="b">memory_block</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">node</span> <span class="f">*</span><span class="b">node_devices</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="m">typedef</span>  <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">node_registration_func_t</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">node</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="32" /><span class="Maybe">      32:</span> 
<a name="33" /><span class="Maybe">      33:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">unregister_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">node</span> <span class="f">*</span><span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a>
<a name="35" /><span class="Maybe">      35:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">register_one_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">unregister_one_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">register_cpu_under_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">unregister_cpu_under_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">register_mem_sect_under_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="b">mem_blk</span><span class="f">,</span>
<a name="40" /><span class="Maybe">      40:</span>                         <span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">unregister_mem_sect_under_nodes</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="b">mem_blk</span><span class="f">,</span>
<a name="42" /><span class="Maybe">      42:</span>                        <span class="m">unsigned</span> <span class="m">long</span> <span class="b">phys_index</span><span class="f">)</span><span class="f">;</span>
<a name="43" /><span class="Maybe">      43:</span> 
<a name="44" /><span class="Maybe">      44:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0hVR0VUTEJGU18w"><span class="b">CONFIG_HUGETLBFS</span></a>
<a name="45" /><span class="Maybe">      45:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">register_hugetlbfs_with_node</span><span class="f">(</span><span class="b">node_registration_func_t</span> <span class="b">doregister</span><span class="f">,</span>
<a name="46" /><span class="Maybe">      46:</span>                      <span class="b">node_registration_func_t</span> <span class="b">unregister</span><span class="f">)</span><span class="f">;</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="f">#</span><span class="n">endif</span>
<a name="48" /><span class="False">      48:</span> <span class="f">#</span><span class="n">else</span>
<a name="49" /><span class="False">      49:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">register_one_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="50" /><span class="False">      50:</span> <span class="f">{</span>
<a name="51" /><span class="False">      51:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="52" /><span class="False">      52:</span> <span class="f">}</span>
<a name="53" /><span class="False">      53:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">unregister_one_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="54" /><span class="False">      54:</span> <span class="f">{</span>
<a name="55" /><span class="False">      55:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="56" /><span class="False">      56:</span> <span class="f">}</span>
<a name="57" /><span class="False">      57:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">register_cpu_under_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="58" /><span class="False">      58:</span> <span class="f">{</span>
<a name="59" /><span class="False">      59:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="60" /><span class="False">      60:</span> <span class="f">}</span>
<a name="61" /><span class="False">      61:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">unregister_cpu_under_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="62" /><span class="False">      62:</span> <span class="f">{</span>
<a name="63" /><span class="False">      63:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="64" /><span class="False">      64:</span> <span class="f">}</span>
<a name="65" /><span class="False">      65:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">register_mem_sect_under_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="b">mem_blk</span><span class="f">,</span>
<a name="66" /><span class="False">      66:</span>                             <span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="67" /><span class="False">      67:</span> <span class="f">{</span>
<a name="68" /><span class="False">      68:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="69" /><span class="False">      69:</span> <span class="f">}</span>
<a name="70" /><span class="False">      70:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">unregister_mem_sect_under_nodes</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="b">mem_blk</span><span class="f">,</span>
<a name="71" /><span class="False">      71:</span>                           <span class="m">unsigned</span> <span class="m">long</span> <span class="b">phys_index</span><span class="f">)</span>
<a name="72" /><span class="False">      72:</span> <span class="f">{</span>
<a name="73" /><span class="False">      73:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="74" /><span class="False">      74:</span> <span class="f">}</span>
<a name="75" /><span class="False">      75:</span> 
<a name="76" /><span class="False">      76:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">register_hugetlbfs_with_node</span><span class="f">(</span><span class="b">node_registration_func_t</span> <span class="b">reg</span><span class="f">,</span>
<a name="77" /><span class="False">      77:</span>                         <span class="b">node_registration_func_t</span> <span class="b">unreg</span><span class="f">)</span>
<a name="78" /><span class="False">      78:</span> <span class="f">{</span>
<a name="79" /><span class="False">      79:</span> <span class="f">}</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="f">#</span><span class="n">endif</span>
<a name="81" /><span class="Maybe">      81:</span> 
<a name="82" /><span class="Maybe">      82:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dG9fbm9kZV8w"><span class="b">to_node</span></a><span class="f">(</span><span class="b">device</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_Y29udGFpbmVyX29mXzA_"><span class="b">container_of</span></a><span class="f">(</span><span class="b">device</span><span class="f">,</span> <span class="m">struct</span> <span class="b">node</span><span class="f">,</span> <span class="b">dev</span><span class="f">)</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="True">      84:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_NODE_H_ */</span>
<a name="85" /><span class="True">      85:</span> </pre>
  </body>
</html>
